package icu.bughub.app.app.viewmodel

import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import androidx.lifecycle.ViewModel
import icu.bughub.app.app.model.entity.ArticleEntity
import icu.bughub.app.app.model.service.ArticleService
import kotlinx.coroutines.delay

class ArticleViewModel : ViewModel() {

    var articleService = ArticleService.instance()

    //新闻列表数据
    var list by mutableStateOf(
        listOf<ArticleEntity>(
            ArticleEntity(
                "这两天，特朗普为啥不止一次说“欢迎中国留学生”？",
                "来源: 新民周刊 | 作者: 王益",
                "2025-06-06 12:33:03"
            ),
            ArticleEntity(
                "日媒：换美关税让步，日本计划牺牲中国利益",
                "来源: 环球网资讯",
                "2025-06-07 06:23:33"
            ),
            ArticleEntity(
                "基辅防空警报持续超5小时，特朗普：乌克兰给了普京一个轰炸他们的理由！泽连斯基将与特朗普会晤",
                "来源: 新民周刊",
                "2025-06-06 05:22:03"
            ),

            ArticleEntity(
                "涉及中国，光刻机巨头最新发声！",
                "来源: 环球时报国际",
                "2025-06-07 09:09:52"
            ),
            ArticleEntity(
                "为什么说“中国的教育是最好的”？",
                "来源: 新民周刊 | 作者: 王益",
                "2025-06-07 09:09:52"
            ),
            ArticleEntity(
                "乌袭击俄机场，俄报复袭击乌全境，特朗普称“让他们先打一会儿",
                "来源: 环球网资讯",
                "2025-06-07 00:03:55"
            ),
            ArticleEntity(
                "马斯克后悔了，试图和解！美官员：特朗普对与马斯克交谈没兴趣，正考虑出手此前买的红色特斯拉！特斯拉股价巨震",
                "来源: 每日经济新闻",
                "2025-06-07 00:52:04"
            ),
            ArticleEntity(
                "美国下黑手，全球航运巨头：不改，还买中国船",
                "来源: 澎湃新闻",
                "2025-06-07 07:57:01"
            ),
            ArticleEntity(
                "昔日盟友公开争吵，国际舆论一片哗然，世界围观特朗普马斯克“分手”",
                "来源: 环球网资讯",
                "2025-06-06 20:48:24"
            ),
            ArticleEntity(
                "特朗普用“小孩打架”比喻俄乌冲突，克宫“不同意”美方说法：这关乎俄国家安全和利益",
                "来源: 环球网资讯",
                "2025-06-06 19:57:51"
            ),
            ArticleEntity(
                "球星贝克汉姆下周“封爵”？14年进爵之路多波折，曾因逃税丑闻被暂停提名",
                "来源: 红星新闻",
                "2025-06-06 19:36:13"
            ),
            ArticleEntity(
                "动手了 俄大举轰炸乌军工企业 乌总统：袭击几乎覆盖全境",
                "来源: 上游新闻",
                "2025-06-06 19:12:31"
            )
        )
    )
        private set

    val pageSize: Int = 10
    var pageOffset: Int = 1
    var articleLoadSuccess by mutableStateOf(false)
        private set

    var refresh by mutableStateOf(false)
        private set

    var loadMore by mutableStateOf(false)
        private set

    //是否还有更多
    private var hasMore = false

    suspend fun refresh() {
        if (refresh) {
            return
        }
        pageOffset = 1
        refresh = true
        hasMore = false
        fetchArticleList()

    }

    suspend fun loadMore() {
        if (loadMore) {
            return
        }
        if (hasMore) {
            loadMore = true
            pageOffset++
            fetchArticleList()
        }
    }

    suspend fun fetchArticleList() {
        val res = articleService.list(pageOffset, pageSize)
        if (res.code == 0 && res.data != null) {
            var tempList = mutableListOf<ArticleEntity>()
            if (pageOffset != 1) {
                tempList.addAll(list)
            }
            tempList.addAll(res.data)
            list = tempList
            hasMore = res.data.size >= pageSize
            loadMore = false
            articleLoadSuccess = true
            refresh = false
        } else {
            pageOffset--
            if (pageOffset <= 1) {
                pageOffset = 1
            }
            val message = res.message
        }
    }

    private var articleEntity: ArticleEntity? = null


    /*

        var content = """
    <div class="article-container">
            <!-- 文章标题 -->
            <h1>春日野餐指南：解锁户外美食新体验</h1>

            <!-- 作者信息 -->
            <div class="author-info">
                作者：小野 | 发布时间：2024年4月10日 | 分类：生活方式
            </div>

            <!-- 主图（带图注） -->
            <img src="https://picsum.photos/800/500?random=1"
                 alt="春日草坪野餐场景"
                 class="hero-image">
            <div class="caption">阳光正好，铺一块格子布，摆上爱吃的点心，春日野餐就这样开始啦～</div>

            <!-- 正文内容 -->
            <div class="section">
                <h2>为什么选择春天野餐？</h2>
                <p>春天是一年中最适合野餐的季节——气温回升但不燥热，草木萌发带来清新的香气，连风里都带着花香。无论是公园的草坪、郊外的河边，还是小区的休闲区，都能成为你的「移动餐厅」。</p>
                <p>根据《城市户外活动报告》，春季野餐的热门选择中，<strong>轻食简餐</strong>占比高达68%，其次是水果拼盘（52%）和自制甜品（37%）。这说明「方便携带+高颜值」是春日野餐的核心需求。</p>
            </div>

            <!-- 分步骤指南 -->
            <div class="section">
                <h2>野餐必备清单（附挑选技巧）</h2>

                <h3>1. 餐垫：舒适是关键</h3>
                <p>推荐选择<strong>防水防污+折叠便携</strong>的材质（如牛津布或防水聚酯纤维）。尺寸建议180cm×150cm以上，足够2-3人使用。</p>
                <img src="https://picsum.photos/600/400?random=2"
                     alt="彩色格子餐垫"
                     style="width: 100%; border-radius: 8px; margin: 15px 0;">
                <div class="caption">防水格子餐垫：耐脏易清洁，折叠后仅手掌大小</div>

                <h3>2. 食物：清爽不压手</h3>
                <p>避免带需要复杂保存的食物（如油炸食品），推荐：</p>
                <ul>
                    <li>三明治/饭团（提前用保鲜膜分装）</li>
                    <li>切盒水果（草莓、蓝莓、小番茄）</li>
                    <li>低脂酸奶+燕麦脆（酸甜解腻）</li>
                    <li>自制柠檬塔（冷藏后口感更佳）</li>
                </ul>

                <h3>3. 饮品：冰爽又健康</h3>
                <p>推荐气泡水（配青柠片）、冷泡茶（红茶/乌龙茶）或鲜榨果汁（用保温袋+冰袋保存）。避免玻璃瓶装饮料，以防破碎。</p>
            </div>

            <!-- 小贴士 -->
            <div class="tip-box">
                <strong>野餐后清洁小技巧</strong>：
                带一小包湿纸巾和便携式垃圾袋，离开前将食物残渣和包装分类处理。如果草坪允许，可将可降解的餐垫直接铺在地上，减少对环境的影响～
            </div>

            <!-- 结尾 -->
            <div class="section" style="margin-top: 40px;">
                <p>春日的风里藏着花香，草地上传来欢笑，这样的时光值得被好好收藏。下次野餐时，不妨试试这些小技巧，让每一口食物都带着春天的味道～</p>
                <p style="color: #7f8c8d; font-size: 0.9em;">📸 摄影：@自然生活家 | 📍 地点：城市生态公园</p>
            </div>
        </div>
        """.trimIndent()
    */


    val htmlHeader = """
       <!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>春日野餐指南 | 享受户外好时光</title>
    <style>
        /* 基础样式 */
        body {
            font-family: '微软雅黑', sans-serif;
            line-height: 1.8;
            color: #333;
            max-width: 800px;
            margin: 0 auto;
            padding: 20px;
            background-color: #f9f9f9;
        }

        .article-container {
            background: white;
            padding: 30px;
            border-radius: 15px;
            box-shadow: 0 4px 15px rgba(0,0,0,0.1);
        }

        h1 {
            color: #2c3e50;
            font-size: 2.2em;
            margin-bottom: 15px;
            border-bottom: 2px solid #e74c3c;
            padding-bottom: 10px;
        }

        .author-info {
            color: #7f8c8d;
            font-size: 0.9em;
            margin-bottom: 30px;
        }

        .hero-image {
            width: 100%;
            max-width: 600px;
            height: auto;
            border-radius: 10px;
            margin: 20px 0;
            box-shadow: 0 2px 8px rgba(0,0,0,0.15);
        }

        .caption {
            font-size: 0.9em;
            color: #666;
            text-align: center;
            margin: 10px 0 25px;
            font-style: italic;
        }

        .section {
            margin: 30px 0;
        }

        .tip-box {
            background: #fff8f8;
            padding: 20px;
            border-left: 4px solid #e74c3c;
            margin: 20px 0;
            border-radius: 5px;
        }
    </style>
</head>
<body>

  """.trimIndent()


    val htmlFooter = """
 </body>
</html>
    """.trimIndent()

    var content by mutableStateOf("""${htmlHeader}${articleEntity?.content ?: ""}${htmlFooter}""".trimIndent())
        private set

    var loadArticleInfoIng by mutableStateOf(false)
        private set

    suspend fun fetchArticleInfo(id: String) {
        loadArticleInfoIng = true
        val res = articleService.info(id)
        delay(2000)
        if (res.code == 0 && res.data != null) {
            articleEntity = res.data
            loadArticleInfoIng = false
            content = """${htmlHeader}${articleEntity?.content ?: ""}${htmlFooter}""".trimIndent()
        }

    }


}